{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    1\n1    2\n2    3\n3    4\ndtype: int64\na    1\nb    2\nc    3\nd    4\ndtype: int64\n1\n1    1\n2    2\n3    3\n4    4\ndtype: int64\na    1\nb    2\nc    3\nd    4\ndtype: int64\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "print(pd.Series([1, 2, 3, 4]))\n",
    "s1 = pd.Series([1, 2, 3, 4], index=list(\"abcd\"))\n",
    "print(s1)\n",
    "print(s1[\"a\"])\n",
    "s1.index = list(\"1234\")\n",
    "print(s1)\n",
    "\n",
    "d = dict(a=1, b=2, c=3, d=4)\n",
    "print(pd.Series(d))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3 4]\n"
     ]
    }
   ],
   "source": [
    "print(s1.get_values())#获取所有value\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1    a\n2    b\n3    c\ndtype: object\n"
     ]
    }
   ],
   "source": [
    "#通过字典创建series\n",
    "\n",
    "s2 = pd.Series({1: \"a\", 2: \"b\", 3: \"c\"})\n",
    "print(s2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  name  age\n0   张三   12\n1   李四   23\n2   王五   43\n<class 'pandas.core.frame.DataFrame'>\n0    张三\n1    李四\n2    王五\nName: name, dtype: object\n<class 'pandas.core.series.Series'>\n  name  age\n1   李四   23\n2   王五   43\n12.0\n"
     ]
    }
   ],
   "source": [
    "#通过字典创建dataframe\n",
    "\n",
    "data = {\"name\": [\"张三\", \"李四\", \"王五\"], \"age\": [12, 23, 43]}\n",
    "frame = pd.DataFrame(data)\n",
    "print(frame)\n",
    "print(type(frame))\n",
    "s = frame[\"name\"]\n",
    "print(s)\n",
    "print(type(s))\n",
    "print(frame[frame[\"age\"] > 12])#布尔索引\n",
    "\n",
    "print(frame.describe()[\"age\"][\"min\"])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    张三\n1    李四\n2    王五\nName: name, dtype: object\n<class 'pandas.core.series.Series'>\nname    李四\nage     23\nName: 1, dtype: object\n"
     ]
    }
   ],
   "source": [
    "#DataFrame 索引\n",
    "name_ = frame['name']\n",
    "print(name_)\n",
    "print(type(name_))\n",
    "print(frame.iloc[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Empty DataFrame\nColumns: []\nIndex: [0, 1, 2]\n  name  age\n0   张三   12\n1   李四   23\n2   王五   43\n"
     ]
    }
   ],
   "source": [
    "#drop 返回一个新的dataframe 不会修改之前的df\n",
    "dropdf = frame.drop([\"name\",\"age\"],axis=1)\n",
    "print(dropdf)\n",
    "print(frame)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0    False\n1     True\n2     True\nName: age, dtype: bool\n  name  age\n1   李四   23\n2   王五   43\n   age name\n0   12   张三\n1   23   李四\n2   43   王五\n"
     ]
    }
   ],
   "source": [
    "#切片\n",
    "print(frame[\"age\"]>20)\n",
    "age_ = frame[frame[\"age\"] > 20]\n",
    "print(age_)\n",
    "# \n",
    "print(frame[[\"age\",'name']])#获取多列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "name    3\nage     3\ndtype: int64\n             age\ncount   3.000000\nmean   26.000000\nstd    15.716234\nmin    12.000000\n25%    17.500000\n50%    23.000000\n75%    33.000000\nmax    43.000000\nage    15.716234\ndtype: float64\nage    247.0\ndtype: float64\n0     NaN\n1    11.0\n2    20.0\nName: age, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#汇总计算和铜价描述\n",
    "print(frame.count(axis=0))\n",
    "print(frame.describe())\n",
    "print(frame.std())\n",
    "print(frame.var())\n",
    "print(frame[\"age\"].diff())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             id name  age gender clazz\n0    1500100001  施笑槐   22      女  文科六班\n1    1500100002  吕金鹏   24      男  文科六班\n2    1500100003  单乐蕊   22      女  理科六班\n3    1500100004  葛德曜   24      男  理科三班\n4    1500100005  宣谷芹   22      女  理科五班\n5    1500100006  边昂雄   21      男  理科二班\n6    1500100007  尚孤风   23      女  文科六班\n7    1500100008  符半双   22      女  理科六班\n8    1500100009  沈德昌   21      男  理科一班\n9    1500100010  羿彦昌   23      男  理科六班\n10   1500100011  宰运华   21      男  理科三班\n11   1500100012  梁易槐   21      女  理科一班\n12   1500100013  逯君昊   24      男  文科二班\n13   1500100014  羿旭炎   23      男  理科五班\n14   1500100015  宦怀绿   21      女  理科一班\n15   1500100016  潘访烟   23      女  文科一班\n16   1500100017  高芷天   21      女  理科五班\n17   1500100018  骆怜雪   21      女  文科六班\n18   1500100019  娄曦之   24      男  理科三班\n19   1500100020  杭振凯   23      男  理科四班\n20   1500100021  连鸿晖   22      男  理科六班\n21   1500100022  薄运珧   23      男  文科四班\n22   1500100023  东鸿畴   23      男  理科二班\n23   1500100024  湛慕卉   22      女  文科二班\n24   1500100025  翁飞昂   22      男  文科四班\n25   1500100026  向鹏池   21      男  理科四班\n26   1500100027  路辰锟   21      男  文科四班\n27   1500100028  幸浩邈   24      男  理科五班\n28   1500100029  滕旭炎   21      男  理科二班\n29   1500100030  姚依丝   21      女  理科六班\n..          ...  ...  ...    ...   ...\n970  1500100971  郝曼凡   24      女  文科五班\n971  1500100972  王昂杰   23      男  理科二班\n972  1500100973  钮幼南   23      女  文科一班\n973  1500100974  容鸿晖   21      男  文科五班\n974  1500100975  蓬曜瑞   22      男  理科三班\n975  1500100976  卓芷梦   21      女  文科六班\n976  1500100977  邹飞珍   23      女  文科四班\n977  1500100978  郜昆卉   21      男  文科五班\n978  1500100979  乐曜灿   24      男  文科六班\n979  1500100980  霍谷槐   22      女  理科一班\n980  1500100981  经鹏涛   23      男  文科六班\n981  1500100982  钱若芹   21      女  理科二班\n982  1500100983  左傲薇   22      女  理科四班\n983  1500100984  殷景逸   23      男  理科二班\n984  1500100985  申飞珍   21      女  文科一班\n985  1500100986  左天曼   22      女  文科一班\n986  1500100987  双昆杰   24      男  文科四班\n987  1500100988  余鸿云   22      男  文科六班\n988  1500100989  柏盼香   24      女  理科六班\n989  1500100990  扈旭鹏   23      男  理科三班\n990  1500100991  冉飞昂   22      男  理科一班\n991  1500100992  莫运盛   24      男  理科六班\n992  1500100993  衡从蕾   21      女  理科二班\n993  1500100994  相凌青   24      女  理科四班\n994  1500100995  寿芷卉   24      女  理科五班\n995  1500100996  厉运凡   24      男  文科三班\n996  1500100997  陶敬曦   21      男  理科六班\n997  1500100998  容昆宇   22      男  理科四班\n998  1500100999  钟绮晴   23      女  文科五班\n999  1500101000  符瑞渊   23      男  理科六班\n\n[1000 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "#sep  分隔符   默认逗号，   names 列名 默认第一行作为列名\n",
    "students = pd.read_csv(\"data/students.txt\", sep=\",\", names=[\"id\", \"name\", \"age\", \"gender\", \"clazz\"],\n",
    "                       header=None)  #相对项目的路径\n",
    "print(students)\n",
    "#print(students[['name', 'age']])\n",
    "\n",
    "#print(students[students['age'] > 22])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              id  cource_id  score\n0     1500100001    1000001     98\n1     1500100001    1000002      5\n2     1500100001    1000003    137\n3     1500100001    1000004     29\n4     1500100001    1000005     85\n5     1500100001    1000006     52\n6     1500100002    1000001    139\n7     1500100002    1000002    102\n8     1500100002    1000003     44\n9     1500100002    1000004     18\n10    1500100002    1000005     46\n11    1500100002    1000006     91\n12    1500100003    1000001     48\n13    1500100003    1000002    132\n14    1500100003    1000003     41\n15    1500100003    1000007     32\n16    1500100003    1000008      7\n17    1500100003    1000009     99\n18    1500100004    1000001    147\n19    1500100004    1000002     69\n20    1500100004    1000003     37\n21    1500100004    1000007     87\n22    1500100004    1000008     21\n23    1500100004    1000009     60\n24    1500100005    1000001    105\n25    1500100005    1000002    105\n26    1500100005    1000003     30\n27    1500100005    1000007     68\n28    1500100005    1000008     38\n29    1500100005    1000009     49\n...          ...        ...    ...\n5970  1500100996    1000001     43\n5971  1500100996    1000002     66\n5972  1500100996    1000003    135\n5973  1500100996    1000004     85\n5974  1500100996    1000005      9\n5975  1500100996    1000006     17\n5976  1500100997    1000001    113\n5977  1500100997    1000002     41\n5978  1500100997    1000003     44\n5979  1500100997    1000007     29\n5980  1500100997    1000008     23\n5981  1500100997    1000009     43\n5982  1500100998    1000001     37\n5983  1500100998    1000002     57\n5984  1500100998    1000003    106\n5985  1500100998    1000007     91\n5986  1500100998    1000008      9\n5987  1500100998    1000009     98\n5988  1500100999    1000001    115\n5989  1500100999    1000002     55\n5990  1500100999    1000003    102\n5991  1500100999    1000004     48\n5992  1500100999    1000005     41\n5993  1500100999    1000006     10\n5994  1500101000    1000001    100\n5995  1500101000    1000002     78\n5996  1500101000    1000003     81\n5997  1500101000    1000007      5\n5998  1500101000    1000008     87\n5999  1500101000    1000009     28\n\n[6000 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "scores = pd.read_csv(\"data/score.txt\", header=None, names=[\"id\", \"cource_id\", \"score\"])\n",
    "print(scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  name  age\n0   张三   12\n1   李四   23\n2   王五   43\n"
     ]
    }
   ],
   "source": [
    "print(frame)\n",
    "frame.to_csv(\"a.csv\", index=False, header=None)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  name  age\n0   张三   12\n1   李四   23\n2   王五   43\n"
     ]
    }
   ],
   "source": [
    "print(pd.read_csv(\"a.csv\",names=[\"name\",\"age\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           id  cource_id  score\n0  1500100001    1000001     98\n1  1500100001    1000002      5\n2  1500100001    1000003    137\n3  1500100001    1000004     29\n4  1500100001    1000005     85\n5  1500100001    1000006     52\n6  1500100002    1000001    139\n7  1500100002    1000002    102\n8  1500100002    1000003     44\n9  1500100002    1000004     18\n              id  cource_id  score\n5990  1500100999    1000003    102\n5991  1500100999    1000004     48\n5992  1500100999    1000005     41\n5993  1500100999    1000006     10\n5994  1500101000    1000001    100\n5995  1500101000    1000002     78\n5996  1500101000    1000003     81\n5997  1500101000    1000007      5\n5998  1500101000    1000008     87\n5999  1500101000    1000009     28\n<class 'pandas.core.frame.DataFrame'>\nRangeIndex: 6000 entries, 0 to 5999\nData columns (total 3 columns):\nid           6000 non-null int64\ncource_id    6000 non-null int64\nscore        6000 non-null int64\ndtypes: int64(3)\nmemory usage: 140.7 KB\nNone\n                 id     cource_id        score\ncount  6.000000e+03  6.000000e+03  6000.000000\nmean   1.500101e+09  1.000004e+06    62.117333\nstd    2.886990e+02  2.589536e+00    38.808443\nmin    1.500100e+09  1.000001e+06     0.000000\n25%    1.500100e+09  1.000002e+06    30.000000\n50%    1.500101e+09  1.000004e+06    59.000000\n75%    1.500101e+09  1.000006e+06    90.000000\nmax    1.500101e+09  1.000009e+06   149.000000\n"
     ]
    }
   ],
   "source": [
    "print(scores.head(10))\n",
    "print(scores.tail(10))\n",
    "print(scores.info())\n",
    "print(scores.describe())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "男    507\n女    493\nName: gender, dtype: int64\nclazz\n理科三班     68\n理科五班     70\n文科一班     72\n理科一班     78\n理科二班     79\n文科四班     81\n文科五班     84\n文科二班     87\n理科四班     91\n理科六班     92\n文科三班     94\n文科六班    104\nName: clazz, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#统计每一个班的人数\n",
    "print(students[\"gender\"].value_counts())\n",
    "print(students[\"clazz\"].groupby(students[\"clazz\"]).count().sort_values())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "scores[\"id\"].astype(dtype=np.int64)\n",
    "students[\"id\"].astype(dtype=np.int64)\n",
    "scores.set_index('id',inplace=True)  \n",
    "students.set_index('id',inplace=True)  \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "students.to_csv(\"data/s.csv\",sep=\"\\t\",index=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            cource_id  score\nid                          \n1500100001    1000001     98\n1500100001    1000002      5\n1500100001    1000003    137\n1500100001    1000004     29\n1500100001    1000005     85\n1500100001    1000006     52\n1500100002    1000001    139\n1500100002    1000002    102\n1500100002    1000003     44\n1500100002    1000004     18\n1500100002    1000005     46\n1500100002    1000006     91\n1500100003    1000001     48\n1500100003    1000002    132\n1500100003    1000003     41\n1500100003    1000007     32\n1500100003    1000008      7\n1500100003    1000009     99\n1500100004    1000001    147\n1500100004    1000002     69\n1500100004    1000003     37\n1500100004    1000007     87\n1500100004    1000008     21\n1500100004    1000009     60\n1500100005    1000001    105\n1500100005    1000002    105\n1500100005    1000003     30\n1500100005    1000007     68\n1500100005    1000008     38\n1500100005    1000009     49\n...               ...    ...\n1500100996    1000001     43\n1500100996    1000002     66\n1500100996    1000003    135\n1500100996    1000004     85\n1500100996    1000005      9\n1500100996    1000006     17\n1500100997    1000001    113\n1500100997    1000002     41\n1500100997    1000003     44\n1500100997    1000007     29\n1500100997    1000008     23\n1500100997    1000009     43\n1500100998    1000001     37\n1500100998    1000002     57\n1500100998    1000003    106\n1500100998    1000007     91\n1500100998    1000008      9\n1500100998    1000009     98\n1500100999    1000001    115\n1500100999    1000002     55\n1500100999    1000003    102\n1500100999    1000004     48\n1500100999    1000005     41\n1500100999    1000006     10\n1500101000    1000001    100\n1500101000    1000002     78\n1500101000    1000003     81\n1500101000    1000007      5\n1500101000    1000008     87\n1500101000    1000009     28\n\n[6000 rows x 2 columns]\n<class 'pandas.core.frame.DataFrame'>\nInt64Index: 6000 entries, 1500100001 to 1500101000\nData columns (total 2 columns):\ncource_id    6000 non-null int64\nscore        6000 non-null int64\ndtypes: int64(2)\nmemory usage: 140.6 KB\nNone\n<class 'pandas.core.frame.DataFrame'>\nInt64Index: 1000 entries, 1500100001 to 1500101000\nData columns (total 4 columns):\nname      1000 non-null object\nage       1000 non-null int64\ngender    1000 non-null object\nclazz     1000 non-null object\ndtypes: int64(1), object(3)\nmemory usage: 39.1+ KB\nNone\n           name  age gender clazz  cource_id  score\nid                                                 \n1500100001  施笑槐   22      女  文科六班    1000001     98\n1500100001  施笑槐   22      女  文科六班    1000002      5\n1500100001  施笑槐   22      女  文科六班    1000003    137\n1500100001  施笑槐   22      女  文科六班    1000004     29\n1500100001  施笑槐   22      女  文科六班    1000005     85\n1500100001  施笑槐   22      女  文科六班    1000006     52\n1500100002  吕金鹏   24      男  文科六班    1000001    139\n1500100002  吕金鹏   24      男  文科六班    1000002    102\n1500100002  吕金鹏   24      男  文科六班    1000003     44\n1500100002  吕金鹏   24      男  文科六班    1000004     18\n1500100002  吕金鹏   24      男  文科六班    1000005     46\n1500100002  吕金鹏   24      男  文科六班    1000006     91\n1500100003  单乐蕊   22      女  理科六班    1000001     48\n1500100003  单乐蕊   22      女  理科六班    1000002    132\n1500100003  单乐蕊   22      女  理科六班    1000003     41\n1500100003  单乐蕊   22      女  理科六班    1000007     32\n1500100003  单乐蕊   22      女  理科六班    1000008      7\n1500100003  单乐蕊   22      女  理科六班    1000009     99\n1500100004  葛德曜   24      男  理科三班    1000001    147\n1500100004  葛德曜   24      男  理科三班    1000002     69\n1500100004  葛德曜   24      男  理科三班    1000003     37\n1500100004  葛德曜   24      男  理科三班    1000007     87\n1500100004  葛德曜   24      男  理科三班    1000008     21\n1500100004  葛德曜   24      男  理科三班    1000009     60\n1500100005  宣谷芹   22      女  理科五班    1000001    105\n1500100005  宣谷芹   22      女  理科五班    1000002    105\n1500100005  宣谷芹   22      女  理科五班    1000003     30\n1500100005  宣谷芹   22      女  理科五班    1000007     68\n1500100005  宣谷芹   22      女  理科五班    1000008     38\n1500100005  宣谷芹   22      女  理科五班    1000009     49\n...         ...  ...    ...   ...        ...    ...\n1500100996  厉运凡   24      男  文科三班    1000001     43\n1500100996  厉运凡   24      男  文科三班    1000002     66\n1500100996  厉运凡   24      男  文科三班    1000003    135\n1500100996  厉运凡   24      男  文科三班    1000004     85\n1500100996  厉运凡   24      男  文科三班    1000005      9\n1500100996  厉运凡   24      男  文科三班    1000006     17\n1500100997  陶敬曦   21      男  理科六班    1000001    113\n1500100997  陶敬曦   21      男  理科六班    1000002     41\n1500100997  陶敬曦   21      男  理科六班    1000003     44\n1500100997  陶敬曦   21      男  理科六班    1000007     29\n1500100997  陶敬曦   21      男  理科六班    1000008     23\n1500100997  陶敬曦   21      男  理科六班    1000009     43\n1500100998  容昆宇   22      男  理科四班    1000001     37\n1500100998  容昆宇   22      男  理科四班    1000002     57\n1500100998  容昆宇   22      男  理科四班    1000003    106\n1500100998  容昆宇   22      男  理科四班    1000007     91\n1500100998  容昆宇   22      男  理科四班    1000008      9\n1500100998  容昆宇   22      男  理科四班    1000009     98\n1500100999  钟绮晴   23      女  文科五班    1000001    115\n1500100999  钟绮晴   23      女  文科五班    1000002     55\n1500100999  钟绮晴   23      女  文科五班    1000003    102\n1500100999  钟绮晴   23      女  文科五班    1000004     48\n1500100999  钟绮晴   23      女  文科五班    1000005     41\n1500100999  钟绮晴   23      女  文科五班    1000006     10\n1500101000  符瑞渊   23      男  理科六班    1000001    100\n1500101000  符瑞渊   23      男  理科六班    1000002     78\n1500101000  符瑞渊   23      男  理科六班    1000003     81\n1500101000  符瑞渊   23      男  理科六班    1000007      5\n1500101000  符瑞渊   23      男  理科六班    1000008     87\n1500101000  符瑞渊   23      男  理科六班    1000009     28\n\n[6000 rows x 6 columns]\n"
     ]
    }
   ],
   "source": [
    "#scores.rename(columns={\"score\":\"score1\"},inplace=True)\n",
    "print(scores)\n",
    "print(scores.info())\n",
    "print(students.info())\n",
    "print(students.join(scores,on=\"id\",how=\"left\"))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      age  cource_id  score\nname                       \n丁从安   126    6000021    492\n丁昌茂   132    6000021    363\n丁运凡   132    6000021    463\n丁震轩   126    6000021    353\n丁鸿骞   132    6000030    398\n万青旋   138    6000030    399\n东鸿德   138    6000030    487\n严惜珊   138    6000030    376\n严若翠   144    6000021    479\n丰冷霜   132    6000021    560\n丰昊明   138    6000021    360\n乐曜灿   144    6000021    348\n乐绮烟   132    6000021    417\n乔书雁   138    6000030    330\n乔思萱   144    6000030    508\n乔旭尧   126    6000021    340\n乜惜玉   132    6000021    325\n乜昊苍   144    6000021    317\n乜鸿福   144    6000030    323\n习振锐   138    6000030    318\n习昂杰   132    6000021    499\n于从寒   138    6000030    320\n于向南   138    6000030    385\n于晗昱   132    6000030    473\n于景行   126    6000030    320\n云冰真   144    6000021    568\n云幻莲   132    6000030    330\n井范明   132    6000021    426\n仇辰锟   126    6000030    313\n仇运晟   126    6000030    355\n...   ...        ...    ...\n顾笑容   126    6000021    421\n颜慕易   138    6000021    348\n颜沛槐   126    6000021    564\n颜海白   126    6000030    398\n饶忆之   126    6000030    468\n饶新之   144    6000021    419\n饶曜瑞   138    6000030    475\n马向南   126    6000021    595\n马昊天   144    6000030    448\n骆怜雪   126    6000021    425\n高冰夏   144    6000030    379\n高子辰   138    6000030    505\n魏笑卉   132    6000030    518\n鱼山菡   144    6000021    310\n鱼惜玉   132    6000021    384\n鱼星然   144    6000021    426\n鲁盼菡   126    6000030    469\n鲍盼烟   144    6000030    317\n麴妙绿   144    6000030    301\n麴星腾   132    6000030    419\n麻涵亮   132    6000021    303\n麻轩昂   138    6000030    461\n黄初夏   138    6000021    628\n黎旭彬   144    6000021    401\n黎昆鹏   132    6000021    583\n黎盼烟   138    6000030    460\n黎雨珍   138    6000021    550\n齐运杰   144    6000021    469\n龙震博   138    6000030    349\n龚晗昱   126    6000021    401\n\n[787 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "df = students.join(scores,on=\"id\",how=\"left\")\n",
    "sunscore = df.groupby(df['name']).sum()\n",
    "print(sunscore[sunscore[\"score\"]>300])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
